package org.summer.generator.handler;

import org.summer.generator.config.ProjectConfig;
import org.summer.generator.writer.FileWriter;

import java.io.File;

/**
 * 文件创建处理器接口
 */
public interface FileCreateHandler {
    /**
     * 项目所在系统的文件夹
     */
    public static final String BASE_DIR = System.getProperty("user.dir");
    /**
     * 三层接口文件实现类包或者文件夹名字
     */
    public static final String IMPL = "impl" ;
    /**
     * java包路径
     */
    public static final String JAVA_PATH = "/src/main/java";
    /**
     * 资源路径
     */
    public static final String RESOURCES_PATH = "/src/main/resources";
    /**
     * 测试资源路径
     */
    public static final String TEST_RESOURCES_PATH = "/src/test/resources";
    /**
     * java文件扩展名
     */
    public static final String JAVA_FILE_EXTENSION = ".java";
    /**
     * xml文件扩展名
     */
    public static final String XML_FILE_EXTENSION = ".xml";
    /**
     * typescript 文件扩展名
     */
    public static final String TYPESCRIPT_FILE_EXTENSION = ".ts";
    /**
     * typescript react 文件扩展名
     */
    public static final String REACT_TS_FILE_EXTENSION = ".tsx";
    /**
     * 创建文件夹各层文件夹
     */
    void createDir();

    /**
     * 创建需要写入代码信息的文件
     *
     * @param fw 文件写入接口类的类对象
     * @param fileName 文件名字
     */
    File createFile(Class<? extends FileWriter> fw, String fileName);
}
